Streaming is a technology that enables either real-time or on-demand distribution of multimedia contents over network. In this streaming technology, a large capacity of data is divided into segments of a constant size and then sent to a user computer. Once only a desired amount of the entire file is sent to the user computer, it is played back by the user computer. The remaining part of the entire file is sent to the user computer while the file is played back by the user computer.
In the case where a multimedia file including a large capacity of audio or video data is sent and played back using an existing downloading technology, it takes too much time to receive all information of the multimedia file. In contrast, in the above-mentioned streaming technology, the file sending can be performed along with the file playback, resulting in a reduction in user's waiting time.
A streaming service provider, which provides a streaming service associated with a multimedia file or software file using the streaming technology, generally comprises a plurality of servers to accommodate a larger number of clients. In this case, the streaming service provider constructs a system to appropriately distribute the clients service requests to the servers to process them.
In this case, load balancing policy is required to appropriately distribute load to the servers.
FIG. 1 is a block diagram of a traditional streaming system with a load balancing structure. As shown in this drawing, a load balancing switch 120 is disposed between a client 110 and a plurality of servers 130.
The load balancing switch 120, which is usually called a layer 4 (L4) switch, is positioned in front of the servers 130 to allocate packets to the respective servers by changing destination IP addresses or media access control (MAC) addresses of the packets. At this time, the load balancing switch 120 may allocate the packets to the servers 130 while simply circulating the servers 130 in order, or according to the capabilities or load states of the respective servers 130.
In the above structure, if the client 110 requests a streaming service, the load balancing switch 120 receives the service request, selects a proper one of the servers 130 and establishes a session between the client 110 and the selected server. This structure has a disadvantage in that high costs are required in installing the switch and changing the network configuration.
FIG. 2 is a block diagram of another traditional streaming system with a different load balancing structure. A plurality of servers 230 connected to a network constitute a cluster, and a client 210 is connected to the servers 230 through a load balancer 220. The load balancer 220 selects, from among the servers 230, a server to actually provide a service associated with each request from the client 210 on the basis of a streaming protocol and priority. In this structure, the client 210 beyond the cluster recognizes the plurality of servers 230 as one high-performance, high-availability server. At this time, streaming data to be transferred from the selected server to the client 210 must be passed through the load balancer 220.
Especially, when a software streaming service is provided through the above system, the session established between the client and the server can be divided into a first-half part which sends initial execution data to run an application program in a user computer, and a second-half part which sends only data of a specific part desired by the user after the application program is ran.
At this time, in the first-half part of the software streaming service, a large amount of data required to run the application program must be sent, resulting in necessitation of a regular, high bandwidth-on-demand. In the second-half part of the software streaming service, because desired data is sent only in response to the user'S request, the bandwidth-on-demand may be irregular and lower than that in the first-half part. As a result, in the software streaming service, the bandwidth-on-demand may be different depending on sending times even in the same session.
The load balancing technologies applied to the aforementioned traditional streaming system may include a round robin method for allocating clients?service requests to a plurality of servers in order, a hash method for performing a hash operation using source and destination information and protocols to calculate load of each server so as to perform load balancing, and a least connection scheduling method for allocating a client's service request to a server with a smallest number of connections. However, these methods do not consider the difference among the bandwidths-on-demand at the sending times at all, so they cannot efficiently and flexibly distribute load in the software streaming service where the bandwidth-on-demand is different according to the sending times.